package socket;

import io.netty.channel.ChannelHandlerContext;
import io.netty.channel.SimpleChannelInboundHandler;

import java.time.LocalDateTime;

/**
 * @Author: 蔡翔
 * @Date: 2019/10/29 9:20
 * @Version 1.0
 */
//SimpleChannelInboundHandler<String> 代表传输进来的 消费 数据类型是String
public class MyClientHandler extends SimpleChannelInboundHandler<String> {

    //服务端 向这个客户端 发送的消息的时候，这个方法channelRead0就会被触发。
    @Override
    protected void channelRead0(ChannelHandlerContext ctx, String msg) throws Exception {
        System.out.println("远程地址(服务端的)"+ctx.channel().remoteAddress());
        System.out.println("服务端向客户端发送的内容"+msg);
        ctx.writeAndFlush("from client:"+ LocalDateTime.now());
    }

    //这个回调函数表明 通道处于活动状态。调用的方法。
    @Override
    public void channelActive(ChannelHandlerContext ctx) throws Exception {
        ctx.writeAndFlush("来自客户端的问候");
    }

    @Override
    public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception {
        super.exceptionCaught(ctx, cause);
        //如果出现异常的捕捉
        cause.printStackTrace();
        ctx.close();
    }
}
